home *** CD-ROM | disk | FTP | other *** search
-
- (* Nice Photo Routine done by Zulu & Grey of Rebels *)
-
- PROGRAM definition_der_objekte_und_organisation;
-
- USES graph,crt;
-
- TYPE punkt = OBJECT
- x,
- y : REAL;
-
- CONSTRUCTOR init(xwert,ywert : REAL);
- procedure out(VAR xwert,ywert : REAL);
- procedure zeigen; virtual;
- procedure loeschen; virtual;
- procedure addition(dx,dy : REAL); virtual;
-
- procedure verschieben(dx,dy : REAL); virtual;
- END;
-
- linie = OBJECT(punkt)
- x1,
- y1 : REAL;
-
- CONSTRUCTOR init(xwert,ywert,x1wert,y1wert : REAL);
- procedure out(VAR xwert,ywert,x1wert,y1wert : REAL);
- procedure zeigen; virtual;
- procedure addition(dx,dy : REAL); virtual;
-
- {Prozedur VERSCHIEBEN wurde geerbt!}
- END;
-
- kreis = OBJECT(punkt)
- radius : REAL;
-
- CONSTRUCTOR init(xwert,ywert,rad : REAL);
- procedure out(VAR xwert,ywert,rad : REAL);
- procedure zeigen; virtual;
-
- {Prozeduren ADDITION und VERSCHIEBEN von "punkt" geerbt!}
- END;
-
- rechteck = OBJECT(linie)
- procedure zeigen; virtual;
-
- {Restprozeduren von "linie" geerbt!}
- END;
-
- {------------------------------Objekt Punkt----------------------------------}
-
- CONSTRUCTOR punkt.init(xwert,ywert : REAL);
-
- BEGIN
- x := xwert;
- y := ywert;
- END;
-
- PROCEDURE punkt.out(VAR xwert,ywert : REAL);
-
- BEGIN
- xwert := x;
- ywert := y;
- END;
-
- PROCEDURE punkt.zeigen;
-
- BEGIN
- putpixel(round(x),round(y),getcolor);
- {Pixel an der Stelle (x,y) mit akt.Zeichenfarbe}
- END;
-
- PROCEDURE punkt.loeschen;
-
- VAR altfarbe : WORD;
-
- BEGIN
- altfarbe := getcolor;
- setcolor(getbkcolor);
- zeigen;
- setcolor(altfarbe);
- END;
-
- PROCEDURE punkt.addition(dx,dy : REAL);
-
- BEGIN
- x := x + dx;
- y := y + dy;
- END;
-
- PROCEDURE punkt.verschieben(dx,dy : REAL);
-
- BEGIN
- loeschen;
- addition(dx,dy);
- zeigen;
- END;
-
- {-------------------------------Objekt Linie---------------------------------}
-
- CONSTRUCTOR linie.init(xwert,ywert,x1wert,y1wert : REAL);
-
- BEGIN
- x := xwert;
- y := ywert;
- x1 := x1wert;
- y1 := y1wert;
- END;
-
- PROCEDURE linie.out(VAR xwert,ywert,x1wert,y1wert : REAL);
-
- BEGIN
- xwert := x;
- ywert := y;
- x1wert := x1;
- y1wert := y1;
- END;
-
- PROCEDURE linie.zeigen;
-
- BEGIN
- line(round(x),round(y),round(x1),round(y1));
- END;
-
- PROCEDURE linie.addition;
-
- BEGIN
- x := x + dx;
- y := y + dy;
- x1 := x1 + dx;
- y1 := y1 + dy;
- END;
-
- {------------------------------Objekt Kreis----------------------------------}
-
- CONSTRUCTOR kreis.init(xwert,ywert,rad : REAL);
-
- BEGIN
- x := xwert;
- y := ywert;
- radius := rad;
- END;
-
- PROCEDURE kreis.out(VAR xwert,ywert,rad : REAL);
-
- BEGIN
- xwert := x;
- ywert := y;
- rad := radius;
- END;
-
- PROCEDURE kreis.zeigen;
-
- BEGIN
- circle(round(x),round(y),round(radius));
- END;
-
- {-------------------------------Objekt Rechteck 1----------------------------}
-
- PROCEDURE rechteck.zeigen;
-
- BEGIN
- rectangle(round(x),round(y),round(x1),round(y1));
- END;
-
- {--------------------------------Hauptprogramm-------------------------------}
-
- { Ab hier stehen alle Verschiebungsprozeduren fr die vordefinierten Objekte }
- { zur Verfgung! }
-
- VAR
- graphdriver,
- graphmode,
- dx,
- realdx,
- realdy,
- dy : INTEGER;
- ch,ch1 : CHAR;
- opunkt : punkt;
- olinie : linie;
- orechteck : rechteck;
- okreis : kreis;
-
- BEGIN
-
- { Anzeigeobjekte vordefinieren }
- okreis.init(175,140,30);
- orechteck.init(100,100,250,180);
- opunkt.init(175,140);
- olinie.init(110,110,150,110);
-
- { Eingeben der Dx und Dy Werte }
-
- write('Bitte geben Sie den Y Verschiebewert ein: ');readln(realdy);
- write('Bitte geben Sie den X Verschiebewert ein: ');readln(realdx);
-
- { Grafikmodus einschalten }
- graphdriver := detect;
- initgraph(graphdriver,graphmode,'c:\tp\bgi');
-
- { Objekte darstellen }
- okreis.zeigen;
- orechteck.zeigen;
- olinie.zeigen;
- opunkt.zeigen;
-
- { Arbeitsschleife }
- repeat
- ch := readkey;
- case ch of
- #0 : BEGIN
- ch1 := readkey;
- dx := 0;
- dy := 0;
- case ch1 of
- #72 : dy := -realdy; { Cursor auf }
- #80 : dy := realdy; { Cursor ab }
- #75 : dx := -realdx; { Cursor links }
- #77 : dx := realdx; { Cursor rechts }
- else ;
- END;
- opunkt.verschieben(dx,dy);
- olinie.verschieben(dx,dy);
- okreis.verschieben(dx,dy);
- orechteck.verschieben(dx,dy);
- END;
- #13 : ;
- END;
- UNTIL ch=#13; { abbrechen, wenn RETURN gedrckt wurde }
- closegraph; { zurckkehren zum Text-Modus }
- END.
-